SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TCCOMP_RETE_I01]
/*-------------------------------------------------------*/
/*---Empresa              : OFISIS S.A.                --*/
/*---Cliente              : OFISIS S.A.                --*/
/*---Sistema              : Tesoreria                  --*/
/*---M«dulo               : Empresa                    --*/
/*---Programa             : Copia Comp. Retenci½n      --*/
/*---Script               : ttdocp_a.sql               --*/
/*---Nombre SP            : SP_TCCOMP_RETE_I01         --*/
/*---Desarrollado por     : Reynaldo Menacho L.        --*/
/*---Fecha Creaci«n       : 11/06/2002                 --*/
/*---Base Datos           : Microsoft Sql Server       --*/
/*---Versi«n              : 7.0                        --*/
/*---Invoca a SP          :                            --*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Modificado 1 por     : Ernesto G½mez T.           --*/
/*---Fecha Modificaci«n   : 04/12/2003                 --*/
/*---Detalle Modificaci«n : Versi½n 5                  --*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Modificado 2 por     : Maribel Julca Rodriguez    --*/
/*---Fecha Modificaci¸n   : 18-04-2005				   ---*/ 
/*---Detalle Modificaci¸n : se agrego los campos de usuario en el proceso--*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Modificado 1 por     : Carlos Marquez E.          --*/
/*---Fecha Modificaci«n   : 09/08/2005                 --*/
/*---Detalle Modificaci«n : Grabar en la TMDOCU_PROV   --*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Modificado 2 por     : Carlos Marquez E.          --*/
/*---Fecha Modificaci«n   : 09/03/2010                 --*/
/*---Detalle Modificaci«n : Manejo Correcto de Unidades--*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Comentarios                                       --*/
/*---                                                  --*/
/*---                                                  --*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Drop Proc SP_TCCOMP_RETE_I01                      --*/
/*---Grant all on SP_TCCOMP_RETE_I01 to public         --*/ 
/*---

SP_TCCOMP_RETE_I01 '01', 'OFISIS', '0001-0000000001', '0001-0000000009'

--*/
/*-------------------------------------------------------*/
 @ISCO_EMPR       	TD_VC_002, 
 @ISCO_USUA_MODI  	TD_VC_008_USUA,
 @ISNU_COMP_ORIG	TD_VC_020,
 @ISNU_COMP_DEST	TD_VC_020

	As
Declare
	@VSTI_DOCU_RETE	TD_VC_003,
	@VSCO_BANC 	TD_VC_003,
	@VSNU_CNTA_BANC TD_VC_020,
	@VSCO_UNID_CONC    TD_VC_003, --Manejo Correcto de Unidades
	@VSCO_CAJA	TD_VC_020,
	@VSAA_BACA	TD_VC_004,
	@VSMM_BACA	TD_VC_002,
	@VSNU_COMP_BACA TD_VC_020,
	@VSCO_PROV	TD_VC_020,
	@VNNU_SECU	TD_IN_001


 Begin Tran SP_TCCOMP_RETE_I01
 
	Select @VSTI_DOCU_RETE = TI_DOCU
	From TTDOCU_CNTB
	Where ST_DOCU_0021 = 'S'
	
	Select @VSCO_BANC = CO_BANC, @VSNU_CNTA_BANC = NU_CNTA_BANC, @VSCO_CAJA = CO_CAJA,
		@VSAA_BACA = AA_BACA, @VSMM_BACA = MM_BACA, @VSNU_COMP_BACA = NU_COMP_BACA, @VSCO_PROV = CO_PROV
	From TCCOMP_RETE
	Where CO_EMPR = @ISCO_EMPR
	AND NU_COMP_RETE = @ISNU_COMP_ORIG

	--Manejo Correcto de Unidades
	Select 	@VSCO_UNID_CONC = CO_UNID_CONC
	From	TMDOCU_PROV
	Where 	CO_EMPR = @ISCO_EMPR
	 And	CO_TIPO_DOCU = @VSTI_DOCU_RETE
	 And	NU_DOCU_PROV = @ISNU_COMP_ORIG

	-- Cabecera Comprobante Retencion 
	Insert Into TCCOMP_RETE(CO_EMPR, NU_COMP_RETE, FE_COMP_RETE, CO_MONE, CO_PROV, NO_PROV,
						 NU_RUCC, FA_TIPO_CAMB, CO_BANC, NU_CNTA_BANC, 
						CO_CAJA, AA_BACA, MM_BACA, NU_COMP_BACA, NU_DOCU, 
						TI_SITU, 
						CO_USUA_CREA, CO_USUA_MODI)
	Select 	CO_EMPR, @ISNU_COMP_DEST, FE_COMP_RETE, CO_MONE, CO_PROV, NO_PROV,
					 NU_RUCC, FA_TIPO_CAMB, CO_BANC, NU_CNTA_BANC, 
					CO_CAJA, AA_BACA, MM_BACA, NU_COMP_BACA, NU_DOCU, 
					TI_SITU, 
					@ISCO_USUA_MODI, @ISCO_USUA_MODI
	From	TCCOMP_RETE
	Where 	CO_EMPR = @ISCO_EMPR
	And	NU_COMP_RETE = @ISNU_COMP_ORIG

	If @@error <> 0
	Begin
		Rollback tran
		Return
	End    

	-- Detalle Comprobante Retencion 
	Insert Into TDCOMP_RETE
	(CO_EMPR, NU_COMP_RETE, NU_SECU, 
	TI_DOCU, NU_DOCU, FE_EMIS, 
	IM_TOTA_CONV, IM_RETE_CONV, IM_PAGO_CONV, IM_COMP_PAGO, 
	CO_USUA_CREA, CO_USUA_MODI)
	Select 	CO_EMPR, @ISNU_COMP_DEST, NU_SECU, 
	TI_DOCU, NU_DOCU, FE_EMIS, 
	IM_TOTA_CONV, IM_RETE_CONV, IM_PAGO_CONV, IM_COMP_PAGO, 
	@ISCO_USUA_MODI, @ISCO_USUA_MODI
	From	TDCOMP_RETE
	Where 	CO_EMPR = @ISCO_EMPR
	And	NU_COMP_RETE = @ISNU_COMP_ORIG

	If @@error <> 0
	Begin
		Rollback tran
		Return
	End    

	-- Documentos Proveedor--
	Insert Into TMDOCU_PROV
	(CO_EMPR, CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV, ST_ORIG_COSE, CO_TIPO_OPER, 
	CO_COND_PAGO, CO_UNID_CONC, NU_ASTO, FE_VENC, FE_EMIS, 
	FE_PROG_PAGO, FE_REGI_COMP, FE_RECE, FA_TIPO_CAMB, 	FA_CAMB_EXTR, 
	CO_MONE, IM_BRUT_AFEC, IM_BRUT_INAF, IM_GAFI, IM_MORA, IM_FLET, 
	ST_AFEC_GAFI, ST_AFEC_MORA, ST_AFEC_FLET, ST_DCT1_BRAF, ST_DCT1_BRIN, ST_DCT1_GAFI, ST_DCT1_MORA, ST_DCT1_FLET, ST_DCT2_BRAF, ST_DCT2_BRIN, ST_DCT2_GAFI, ST_DCT2_MORA, ST_DCT2_FLET, 
	PC_DCT1, IM_DCT1, PC_DCT2, IM_DCT2, CO_IMP1, PC_IMP1, IM_IMP1, CO_IMP2, PC_IMP2, IM_IMP2, CO_IMP3, PC_IMP3, IM_IMP3, IM_TOTA, IM_PAGA,
	TI_DOCU_ORIG, NU_DOCU_ORIG, FE_DOCU_ORIG, DE_OBSE, 
	CO_ESTA_DOCU, NU_REND_GAST, FE_REND_GAST, 
	NU_CANJ, NU_RENO, ST_CONT, 
	NU_PROC, TI_PROV, NU_COMP_SERV, NU_CORR_COMP, NU_CORR_PROV, 
	PC_SCRF, IM_SCRF, IM_SCF1, IM_SCF2, IM_SCF3, 
	CO_MODE_DIST, ST_REND_COMP, NU_SREN_GAST, NU_IMPO, NU_DEPO_DETR, FE_DEPO_DETR, 
	CO_ACTI_DETR, CO_TIOP_DETR, ST_SUJE_DETR, CO_USUA_CREA, CO_USUA_MODI)
	Select 	CO_EMPR, CO_PROV, CO_TIPO_DOCU, @ISNU_COMP_DEST, ST_ORIG_COSE, CO_TIPO_OPER, 
	CO_COND_PAGO, CO_UNID_CONC, NU_ASTO, FE_VENC, FE_EMIS, 
	FE_PROG_PAGO, FE_REGI_COMP, FE_RECE, FA_TIPO_CAMB, 	FA_CAMB_EXTR, 
	CO_MONE, IM_BRUT_AFEC, IM_BRUT_INAF, IM_GAFI, IM_MORA, IM_FLET, 
	ST_AFEC_GAFI, ST_AFEC_MORA, ST_AFEC_FLET, ST_DCT1_BRAF, ST_DCT1_BRIN, ST_DCT1_GAFI, ST_DCT1_MORA, ST_DCT1_FLET, ST_DCT2_BRAF, ST_DCT2_BRIN, ST_DCT2_GAFI, ST_DCT2_MORA, ST_DCT2_FLET, 
	PC_DCT1, IM_DCT1, PC_DCT2, IM_DCT2, CO_IMP1, PC_IMP1, IM_IMP1, CO_IMP2, PC_IMP2, IM_IMP2, CO_IMP3, PC_IMP3, IM_IMP3, IM_TOTA, IM_PAGA,
	TI_DOCU_ORIG, NU_DOCU_ORIG, FE_DOCU_ORIG, DE_OBSE, 
	CO_ESTA_DOCU, NU_REND_GAST, FE_REND_GAST, 
	NU_CANJ, NU_RENO, ST_CONT, 
	NU_PROC, TI_PROV, NU_COMP_SERV, NU_CORR_COMP, NU_CORR_PROV, 
	PC_SCRF, IM_SCRF, IM_SCF1, IM_SCF2, IM_SCF3, 
	CO_MODE_DIST, ST_REND_COMP, NU_SREN_GAST, NU_IMPO, NU_DEPO_DETR, FE_DEPO_DETR, 
	CO_ACTI_DETR, CO_TIOP_DETR, ST_SUJE_DETR, @ISCO_USUA_MODI, @ISCO_USUA_MODI
	From	TMDOCU_PROV
	Where 	CO_EMPR = @ISCO_EMPR
	 And	CO_TIPO_DOCU = @VSTI_DOCU_RETE
	 And	NU_DOCU_PROV = @ISNU_COMP_ORIG

	If @@error <> 0
	Begin
		Rollback tran
		Return
	End    

	Update 	TTDOSE_CORR
	Set 	NU_ULTI_CORR = T1.NU_ULTI_CORR + 1,
			CO_USUA_MODI = @ISCO_USUA_MODI,
			FE_USUA_MODI = GETDATE()
	From 	TTDOSE_CORR T1, TTDOCU_CNTB T2
	Where 	T1.CO_EMPR = @ISCO_EMPR
	AND 	T1.TI_DOCU = T2.TI_DOCU
	AND 	T2.ST_DOCU_0021 = 'S'
	AND 	T1.NU_SERI = SUBSTRING(@ISNU_COMP_DEST, 1, PATINDEX('%-%', @ISNU_COMP_DEST)-1)
	
	If @@error <> 0
	Begin
		Rollback tran
		Return
	End


	If @VSCO_CAJA IS NULL or Ltrim(Rtrim(@VSCO_CAJA)) = ''
	Begin
		Select @VNNU_SECU = Max(NU_SECU) + 1
		From	TDMOVI_BANC
		Where   CO_EMPR = @ISCO_EMPR
		And CO_UNID_CONC =  @VSCO_UNID_CONC --Manejo Correcto de Unidades
		And CO_BANC =  @VSCO_BANC
		And NU_CNTA_BANC = @VSNU_CNTA_BANC
		And AA_BNCO = @VSAA_BACA
		And MM_BNCO = @VSMM_BACA
		And TI_MOVI_BANC = 'E'
		And NU_COMP_BANC = @VSNU_COMP_BACA
	
		Insert Into TDMOVI_BANC
		(CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO,
		TI_MOVI_BANC, NU_COMP_BANC, NU_SECU, TI_ENTI, CO_ENTI, 
		TI_DOCU_ENTI, NU_DOCU_ENTI, CO_MONE_DOCU, FE_DOCU, IM_DOCU,
		IM_SALD_DOCU, IM_SALD_CONV, IM_DETA, IM_DETA_NEGA, 
		IM_CONV_DOCU, DE_OBSE, ST_CIER_DOCU,CO_USUA_CREA,  CO_USUA_MODI, CO_UNID_CONC)
		Select  CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO,
				TI_MOVI_BANC, NU_COMP_BANC, @VNNU_SECU, TI_ENTI, CO_ENTI, 
				TI_DOCU_ENTI, @ISNU_COMP_DEST, CO_MONE_DOCU, FE_DOCU, IM_DOCU,
				IM_SALD_DOCU, IM_SALD_CONV, IM_DETA, IM_DETA_NEGA, 
				IM_CONV_DOCU, DE_OBSE, ST_CIER_DOCU, @ISCO_USUA_MODI, @ISCO_USUA_MODI, CO_UNID_CONC
		From	TDMOVI_BANC
		Where CO_EMPR = @ISCO_EMPR
		And CO_UNID_CONC =  @VSCO_UNID_CONC --Manejo Correcto de Unidades
		And CO_BANC =  @VSCO_BANC
		And NU_CNTA_BANC = @VSNU_CNTA_BANC
		And AA_BNCO = @VSAA_BACA
		And MM_BNCO = @VSMM_BACA
		And TI_MOVI_BANC = 'E'
		And NU_COMP_BANC = @VSNU_COMP_BACA
		And TI_ENTI = 'P'
		And CO_ENTI = @VSCO_PROV
		And TI_DOCU_ENTI = @VSTI_DOCU_RETE
		And NU_DOCU_ENTI = @ISNU_COMP_ORIG
	End
	Else
	Begin
		Select @VNNU_SECU = Max(NU_SECU) + 1
		From	TDMOVI_CAJA
		Where   CO_EMPR = @ISCO_EMPR
		And CO_CAJA =  @VSCO_CAJA
		And AA_CAJA = @VSAA_BACA
		And MM_CAJA = @VSMM_BACA
		And TI_MOVI = 'E'
		And NU_COMP_CAJA = @VSNU_COMP_BACA
	
		Insert Into TDMOVI_CAJA
		(CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA,
		TI_MOVI, NU_COMP_CAJA, NU_SECU, TI_ENTI, CO_ENTI, 
		TI_DOCU_ENTI, NU_DOCU_ENTI, CO_MONE_DOCU, FE_DOCU, IM_DOCU,
		IM_SALD_DOCU, IM_SALD_CONV, IM_DETA, IM_DETA_NEGA, 
		IM_CONV_DOCU, DE_OBSE, ST_CIER_DOCU, CO_USUA_CREA, CO_USUA_MODI)
		Select  CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA,
		TI_MOVI, NU_COMP_CAJA, @VNNU_SECU, TI_ENTI, CO_ENTI, 
		TI_DOCU_ENTI, @ISNU_COMP_DEST, CO_MONE_DOCU, FE_DOCU, IM_DOCU,
		IM_SALD_DOCU, IM_SALD_CONV, IM_DETA, IM_DETA_NEGA, 
		IM_CONV_DOCU, DE_OBSE, ST_CIER_DOCU, @ISCO_USUA_MODI, @ISCO_USUA_MODI
		From	TDMOVI_CAJA
		Where   CO_EMPR = @ISCO_EMPR
		And CO_CAJA =  @VSCO_CAJA
		And AA_CAJA = @VSAA_BACA
		And MM_CAJA = @VSMM_BACA
		And TI_MOVI = 'E'
		And NU_COMP_CAJA = @VSNU_COMP_BACA
		And TI_ENTI = 'P'
		And CO_ENTI = @VSCO_PROV
		And TI_DOCU_ENTI = @VSTI_DOCU_RETE
		And NU_DOCU_ENTI = @ISNU_COMP_ORIG
	End
	
	If @@error <> 0
	Begin
		Rollback tran
		Return
	End    
	
 Commit Tran 
/*-------------------------- Fin ------------------------------*/


GO
